#include <stdio.h>
#include <stdlib.h>

typedef struct SqStack
{
    int *bottom;  // 栈底指针
    int *top;  // 栈顶指针
    int size;  // 栈元素最大个数
}SqStack;

// 初始化顺序栈
SqStack initSqStack(int st_size)
{
    SqStack st;
    st.bottom = (int*)malloc(st_size * sizeof(int) + 1);
    if(st.bottom == NULL)
    {
        printf("栈空间分配失败。\n");
        return st;
    }
    st.top = st.bottom;
    st.size = st_size;
    return st;
}

// 压栈
void push(SqStack* st, int elem)
{
    if(st->top - st->bottom == st->size)
    {
        printf("栈满！！！\n");
        return ;
    }
    st->top++;
    st->bottom[st->top - st->bottom] = elem;
}

// 出栈
int get(SqStack* st)
{
    int value;
    if(st->top == st->bottom)
    {
        printf("栈空！！！\n");
        return -1;
    }
    int a = st->top - st->bottom;
    value = st->bottom[st->top - st->bottom];
    st->top--;
    return value;
}

int main()
{
    SqStack* st;
    SqStack s = initSqStack(10);
    st = &s;
    push(st, 2);
    push(st, 4);
    push(st, 6);
    push(st, 3);
    push(st, 1);
    push(st, 9);
    push(st, 8);
    push(st, 10);
    push(st, 7);
    push(st, 5);
    // 出栈
    for(int j=0; j<10; j++)
    {
        printf("%d ", get(st));
    }
    printf("\n");
    push(st, 11);
    push(st, 100);
    printf("%d ", get(st));
    printf("%d \n", get(st));
    return 0;
}

